package br.com.vti.sisp_sicrim.antigo.model;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.com.vti.sisp_sicrim.antigo.dao.SicNumeroDAO;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;

@SuppressWarnings("serial")
public class SicNumero implements Serializable {

	private String id = "";
	private Long ultimoNumero = 0L;
	private ResultSet consulta = null;
	private SicNumeroDAO sicNumeroDAO = new SicNumeroDAO();

	public SicNumero() {
		super();
	}

	public SicNumero(String id, Long ultimoNumero) {
		super();
		this.id = id;
		this.ultimoNumero = ultimoNumero;
	}

	public void atualiza() {

		try {
			sicNumeroDAO.update(this.id, ultimoNumero);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
	}

	public boolean leitura() {

		try {
			if (consulta == null) {
				consulta = sicNumeroDAO.read();
			} else {
				consulta = sicNumeroDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean fimDados() {
		return !(sicNumeroDAO.temProximo());
	}

	public void salvarQuebras() {

	}

	public void formataAtributos(ResultSet lista) {

		if (lista == null)
			return;
		try {
			this.id = lista.getString("id");
			this.ultimoNumero = lista.getLong("ultimoNumero");
		} catch (SQLException e) {
		}
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public Long getUltimoNumero() {
		return ultimoNumero;
	}

	public void setUltimoNumero(Long ultimoNumero) {
		this.ultimoNumero = ultimoNumero;
	}

	public void fecha() {
		sicNumeroDAO.fecha();
		consulta = null;
	}

	public long registrosProcessados() {
		return sicNumeroDAO.nroRegistro;
	}

	public long totalRegistros() {
		return sicNumeroDAO.qtdRegistros;
	}

}
